package org.javaboy.vhr.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;
import java.io.Serializable;

/**
 * 薪資信息表(SalaryInfo)实体类
 *
 * @author makejava
 * @since 2025-05-27 09:17:05
 */
@TableName ( "salary_info" )
@Data
public class SalaryInfo implements Serializable {
	private static final long serialVersionUID = 225513331129897925L;
	/**
	 * 主鍵ID
	 */
	@TableId ( type = IdType.AUTO )
	private Integer id;
	/**
	 * 員工ID
	 */
	private Integer employeeId;
	/**
	 * 薪資月份
	 */
	private String salaryMonth;
	/**
	 * 基本工資
	 */
	private Double basicSalary;
	/**
	 * 績效工資
	 */
	private Double performanceSalary;
	/**
	 * 加班費
	 */
	private Double overtimePay;
	/**
	 * 其他補貼
	 */
	@TableField ( "others" )
	private Double others;
	/**
	 * 水電費扣除
	 */
	private Double utilityDeduction;
	/**
	 * 工作天數
	 */
	private Integer workingDays;
	/**
	 * 請假時數
	 */
	private Double leaveHours;
	/**
	 * 應發工資
	 */
	private Double payableSalary;
	/**
	 * 社保扣除
	 */
	private Double socialInsuranceDeduction;
	/**
	 * 住房公積金扣除
	 */
	private Double housingFundDeduction;
	/**
	 * 個人所得稅
	 */
	private Double tax;
	/**
	 * 實發工資
	 */
	private Double actualSalary;
	/**
	 * 備註
	 */
	private String remarks;
	/**
	 * 創建時間
	 */
	@TableField ( "create_time" )
	@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
	private Date createTime;
	/**
	 * 更新時間
	 */
	@TableField ( "update_time" )
	@JsonFormat ( pattern = "yyyy-MM-dd HH:mm:ss" )
	private Date updateTime;

	/**
	 * 薪資配置ID
	 */
	private Integer salaryId;

	/**
	 * 薪資配置信息
	 */
	@TableField(exist = false)
	private Salary salary;

	/**
	 * 員工信息
	 */
	@TableField(exist = false)
	private Employee employee;

	public Integer getId ( ) {
		return id;
	}

	public void setId ( Integer id ) {
		this.id = id;
	}

	public Integer getEmployeeId ( ) {
		return employeeId;
	}

	public void setEmployeeId ( Integer employeeId ) {
		this.employeeId = employeeId;
	}

	public String getSalaryMonth ( ) {
		return salaryMonth;
	}

	public void setSalaryMonth ( String salaryMonth ) {
		this.salaryMonth = salaryMonth;
	}

	public Double getBasicSalary ( ) {
		return basicSalary;
	}

	public void setBasicSalary ( Double basicSalary ) {
		this.basicSalary = basicSalary;
	}

	public Double getPerformanceSalary ( ) {
		return performanceSalary;
	}

	public void setPerformanceSalary ( Double performanceSalary ) {
		this.performanceSalary = performanceSalary;
	}

	public Double getOvertimePay ( ) {
		return overtimePay;
	}

	public void setOvertimePay ( Double overtimePay ) {
		this.overtimePay = overtimePay;
	}

	public Double getOthers ( ) {
		return others;
	}

	public void setOthers ( Double others ) {
		this.others = others;
	}

	public Double getUtilityDeduction ( ) {
		return utilityDeduction;
	}

	public void setUtilityDeduction ( Double utilityDeduction ) {
		this.utilityDeduction = utilityDeduction;
	}

	public Integer getWorkingDays ( ) {
		return workingDays;
	}

	public void setWorkingDays ( Integer workingDays ) {
		this.workingDays = workingDays;
	}

	public Double getLeaveHours ( ) {
		return leaveHours;
	}

	public void setLeaveHours ( Double leaveHours ) {
		this.leaveHours = leaveHours;
	}

	public Double getPayableSalary ( ) {
		return payableSalary;
	}

	public void setPayableSalary ( Double payableSalary ) {
		this.payableSalary = payableSalary;
	}

	public Double getSocialInsuranceDeduction ( ) {
		return socialInsuranceDeduction;
	}

	public void setSocialInsuranceDeduction ( Double socialInsuranceDeduction ) {
		this.socialInsuranceDeduction = socialInsuranceDeduction;
	}

	public Double getHousingFundDeduction ( ) {
		return housingFundDeduction;
	}

	public void setHousingFundDeduction ( Double housingFundDeduction ) {
		this.housingFundDeduction = housingFundDeduction;
	}

	public Double getTax ( ) {
		return tax;
	}

	public void setTax ( Double tax ) {
		this.tax = tax;
	}

	public Double getActualSalary ( ) {
		return actualSalary;
	}

	public void setActualSalary ( Double actualSalary ) {
		this.actualSalary = actualSalary;
	}

	public String getRemarks ( ) {
		return remarks;
	}

	public void setRemarks ( String remarks ) {
		this.remarks = remarks;
	}

	public Date getCreateTime ( ) {
		return createTime;
	}

	public void setCreateTime ( Date createTime ) {
		this.createTime = createTime;
	}

	public Date getUpdateTime ( ) {
		return updateTime;
	}

	public void setUpdateTime ( Date updateTime ) {
		this.updateTime = updateTime;
	}
}